Computational speeds of single processor computers have advanced tremendously over the past three decades. However, many fields require computational capacity that exceeds even the fastest single processor computer. An example is in transactional processing, where multiple users access computer resources concurrently, and where response times must be low for the system to be commercially acceptable. Another example is in database mining, where hundreds of gigabytes of information must be processed, and where processing data on a serial computer might take days or weeks. Accordingly, a variety of “parallel processing” systems have been developed to handle such problems. For purposes of this discussion, parallel processing systems include any configuration of computer systems using multiple central processing units (CPUs), either local (e.g., multiprocessor systems such as SMP computers), or locally distributed (e.g., multiple processors coupled as clusters or MPPs), or remotely, or remotely distributed (e.g., multiple processors coupled via LAN or WAN networks), or any combination thereof.
However, despite the existence of such parallel processing systems, not all programs or software tools are designed to take advantage of parallel processing. For example, several commercially important software tools share the following characteristics:                The software tool is capable of performing a variety of functions.        The invocation of those functions is controlled by a “scripting language” which specifies a series of processing steps and the interchange of data between those processing steps.        Users write applications using the combination of the tool and its scripting language.        The software tool makes no or minimal use of parallel processing.        
One example of such a software tool is the “SAS® Software System”, a data analysis system produced by the SAS Institute, Inc. The functions provided by this tool include data transformation, data aggregation, dataset management, and a wide variety of statistical procedures. Users build SAS applications by writing scripts in a language which is also called “SAS”. A second example of such a tool is “SyncSort®” produced by Syncsort Inc. The functions provided by this application include data filtering, data sorting, and data aggregation. Users build “Syncsort” applications by writing “Syncsort” scripts.
When applications built with such software tools are used to process large quantities of data, execution times can become quite large. Parallel processing, in which large numbers of processors can be applied to a single application, has the potential to speed up such data-intensive applications. Ideally, a job which took 10 hours running on a single processor might take as little as 10 minutes running on 60 processors. Such a performance improvement is, of course, dependent on having software which is capable of utilizing the parallel processing system.
Users of these software tools are not, in most cases, willing to learn how to use a new and/or different tool or to modify existing applications of the tool. For example, a user of SAS generally would not be willing to learn an entirely new scripting language or to modify existing SAS applications. In order to bring the benefits of parallelism to such users, the inventor has determined that it would be desirable to automatically parallelize applications of the tool, as expressed in the scripting language.